#include<stdio.h>
#include<string.h>


int main()
{
    //strlen:计算字符串长度
    //strcpy:字符串拷贝  不会进行越界检查
    //strncpy:拷贝n个字符。
        //strcmp:字符串比较函数。
        //strncmp：比较n个字符
    //strcat:字符串的拼接函数
    //strncat:拼接n个字符                                                   
    //strstr:字符串匹配函数
    //strtok:字符串的切割函数
  
    char s[]="hello";//留一个位置给\0
    //printf("%ld\n",strlen(s));
   // printf("%ld\n",sizeof(s));//6个
    char str[]="hello";
   // strcpy(str,s);//不是内存安全的函数
   //strncpy(str,s,sizeof(str)-1);

    printf("%s\n",str);
    if(strcmp(s,str)==0)//字符串相等
    {
        printf("字符串相等\n");
    }



    const char *s1="hello";
     const char *s2="helloaorld";
     //返回值：字符串中同一位置的字符的asc码的差值
     //一个字符一个字符的比较，找到不为0的差值返回
     //子串：由字符串的一部分组成的字符串
            //printf("%d\n",strcmp(s1,s2));
            // printf("%d\n",strncmp(s1,s2,5));

  //在前一个字符串中寻找后一个字符串，找到就返回该子串在前一个字符串的首地址
  //没找到，返回空指针。
    char *dest=strstr(s2,s1);
    if(dest==NULL)
    {
        printf("没找到\n");
    }
    else{
        printf("%s\n",dest);
    }



    //字符串的切割函数
    //被切割的字符串，  切割符号集合
    //返回值：切割下来的字符串的首地址
    //strtok会把分隔符变成\0
    char str[]="zhangsan,lisa.wangwu"
    char *s=strtok(str,",.");//遇到str任意一个， 。都会切割
    printf("%s\n",s);
    //继续切割上一次的字符串
     strtok(NULL,", .");
    printf("%s\n",s);//没有能再切割的字符串，返回空指针
    //持续切割
    char *s=strtok(str,",.");
    while(s!=NULL)//指针不指向null继续切割
    {
        printf("%s\n",s);
        s=strtok(NULL,",.");
    }

    //拼接函数
    const char *s="world";
    char str[20]="hello";
    strcat(str,s);
    printf("%s\n",str);
    //strncat
    strncat(str,s,sizeof(str)-strlen(str)-1);
    printf("%s\n",str);

    return 0;
}